package com.xjx.exception;

import com.xjx.enums.ErrorCode;
import lombok.Getter;

/**
 * 通用服务层业务异常
 *
 * 当Service层的业务逻辑不满足条件时（如：库存不足、用户不存在等），
 * 应统一抛出此异常。
 * 它将被 GlobalExceptionHandler 捕获并转换为标准的API响应格式。
 */
@Getter
public class ServiceException extends RuntimeException {

    private final int code;
    private final String msg;

    /**
     * 使用预定义的错误码和信息
     * @param errorCode 错误码枚举
     */
    public ServiceException(ErrorCode errorCode) {
        super(errorCode.getMsg());
        this.code = errorCode.getCode();
        this.msg = errorCode.getMsg();
    }

    /**
     * 使用预定义的错误码，但自定义错误信息
     * @param errorCode 错误码枚举
     * @param message 自定义的错误提示信息
     */
    public ServiceException(ErrorCode errorCode, String message) {
        super(message);
        this.code = errorCode.getCode();
        this.msg = message;
    }
}